@sync-in/server 1.8.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -11
- package/environment/environment.dist.yaml +29 -26
- package/package.json +15 -15
- package/server/app.constants.js +9 -0
- package/server/app.constants.js.map +1 -1
- package/server/app.module.js +4 -0
- package/server/app.module.js.map +1 -1
- package/server/applications/admin/admin.module.js +6 -1
- package/server/applications/admin/admin.module.js.map +1 -1
- package/server/applications/{notifications/interfaces/user-mail-notification.js → admin/interfaces/check-update.interfaces.js} +1 -1
- package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -0
- package/server/applications/admin/services/admin-scheduler.service.js +53 -0
- package/server/applications/admin/services/admin-scheduler.service.js.map +1 -0
- package/server/applications/admin/services/admin.service.js +102 -0
- package/server/applications/admin/services/admin.service.js.map +1 -0
- package/server/applications/admin/services/admin.service.spec.js +46 -0
- package/server/applications/admin/services/admin.service.spec.js.map +1 -0
- package/server/applications/admin/utils/check-update.js +28 -0
- package/server/applications/admin/utils/check-update.js.map +1 -0
- package/server/applications/comments/services/comments-manager.service.js +1 -1
- package/server/applications/comments/services/comments-manager.service.js.map +1 -1
- package/server/applications/comments/services/comments-manager.service.spec.js +1 -1
- package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
- package/server/applications/comments/services/comments-queries.service.js.map +1 -1
- package/server/applications/files/constants/cache.js +10 -1
- package/server/applications/files/constants/cache.js.map +1 -1
- package/server/applications/files/constants/only-office.js +0 -25
- package/server/applications/files/constants/only-office.js.map +1 -1
- package/server/applications/files/constants/operations.js +20 -3
- package/server/applications/files/constants/operations.js.map +1 -1
- package/server/applications/files/dto/file-operations.dto.js +7 -0
- package/server/applications/files/dto/file-operations.dto.js.map +1 -1
- package/server/applications/files/files-only-office.controller.js +3 -2
- package/server/applications/files/files-only-office.controller.js.map +1 -1
- package/server/applications/files/files-only-office.controller.spec.js +6 -5
- package/server/applications/files/files-only-office.controller.spec.js.map +1 -1
- package/server/applications/files/files.controller.js +88 -8
- package/server/applications/files/files.controller.js.map +1 -1
- package/server/applications/files/files.controller.spec.js +11 -4
- package/server/applications/files/files.controller.spec.js.map +1 -1
- package/server/applications/files/guards/files-only-office.guard.js +6 -0
- package/server/applications/files/guards/files-only-office.guard.js.map +1 -1
- package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
- package/server/applications/files/interfaces/only-office-config.interface.js.map +1 -1
- package/server/applications/files/services/files-content-manager.service.js +3 -3
- package/server/applications/files/services/files-content-manager.service.js.map +1 -1
- package/server/applications/files/services/files-lock-manager.service.js +61 -22
- package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
- package/server/applications/files/services/files-manager.service.js +122 -24
- package/server/applications/files/services/files-manager.service.js.map +1 -1
- package/server/applications/files/services/files-manager.service.spec.js +15 -0
- package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
- package/server/applications/files/services/files-methods.service.js +38 -8
- package/server/applications/files/services/files-methods.service.js.map +1 -1
- package/server/applications/files/services/files-only-office-manager.service.js +12 -12
- package/server/applications/files/services/files-only-office-manager.service.js.map +1 -1
- package/server/applications/files/services/files-parser.service.js +1 -1
- package/server/applications/files/services/files-parser.service.js.map +1 -1
- package/server/applications/files/services/files-queries.service.js +10 -0
- package/server/applications/files/services/files-queries.service.js.map +1 -1
- package/server/applications/files/utils/files.js +1 -1
- package/server/applications/files/utils/files.js.map +1 -1
- package/server/applications/files/utils/send-file.js +3 -2
- package/server/applications/files/utils/send-file.js.map +1 -1
- package/server/applications/links/services/links-queries.service.js +1 -1
- package/server/applications/links/services/links-queries.service.js.map +1 -1
- package/server/applications/notifications/constants/notifications.js +5 -1
- package/server/applications/notifications/constants/notifications.js.map +1 -1
- package/server/applications/notifications/i18n/de.js +8 -2
- package/server/applications/notifications/i18n/de.js.map +1 -1
- package/server/applications/notifications/i18n/es.js +8 -2
- package/server/applications/notifications/i18n/es.js.map +1 -1
- package/server/applications/notifications/i18n/fr.js +8 -2
- package/server/applications/notifications/i18n/fr.js.map +1 -1
- package/server/applications/notifications/i18n/hi.js +8 -2
- package/server/applications/notifications/i18n/hi.js.map +1 -1
- package/server/applications/notifications/i18n/it.js +8 -2
- package/server/applications/notifications/i18n/it.js.map +1 -1
- package/server/applications/notifications/i18n/ja.js +8 -2
- package/server/applications/notifications/i18n/ja.js.map +1 -1
- package/server/applications/notifications/i18n/ko.js +8 -2
- package/server/applications/notifications/i18n/ko.js.map +1 -1
- package/server/applications/notifications/i18n/pl.js +8 -2
- package/server/applications/notifications/i18n/pl.js.map +1 -1
- package/server/applications/notifications/i18n/pt.js +8 -2
- package/server/applications/notifications/i18n/pt.js.map +1 -1
- package/server/applications/notifications/i18n/pt_br.js +8 -2
- package/server/applications/notifications/i18n/pt_br.js.map +1 -1
- package/server/applications/notifications/i18n/ru.js +8 -2
- package/server/applications/notifications/i18n/ru.js.map +1 -1
- package/server/applications/notifications/i18n/tr.js +8 -2
- package/server/applications/notifications/i18n/tr.js.map +1 -1
- package/server/applications/notifications/i18n/zh.js +8 -2
- package/server/applications/notifications/i18n/zh.js.map +1 -1
- package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
- package/server/applications/notifications/interfaces/user-mail-notification.interface.js +10 -0
- package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -0
- package/server/applications/notifications/mails/models.js +38 -3
- package/server/applications/notifications/mails/models.js.map +1 -1
- package/server/applications/notifications/mails/templates.js +1 -1
- package/server/applications/notifications/mails/templates.js.map +1 -1
- package/server/applications/notifications/services/notifications-manager.service.js +8 -1
- package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
- package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.js +17 -10
- package/server/applications/shares/services/shares-manager.service.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.spec.js +10 -3
- package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
- package/server/applications/shares/services/shares-queries.service.js +11 -1
- package/server/applications/shares/services/shares-queries.service.js.map +1 -1
- package/server/applications/spaces/guards/space.guard.spec.js +2 -2
- package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
- package/server/applications/spaces/services/spaces-browser.service.js +31 -11
- package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-manager.service.js +2 -2
- package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-queries.service.js +6 -2
- package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
- package/server/applications/spaces/utils/permissions.js +2 -2
- package/server/applications/spaces/utils/permissions.js.map +1 -1
- package/server/applications/sync/services/sync-manager.service.js +1 -0
- package/server/applications/sync/services/sync-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.js +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.spec.js +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
- package/server/applications/users/constants/user.js +1 -1
- package/server/applications/users/constants/user.js.map +1 -1
- package/server/applications/users/services/admin-users-queries.service.js +8 -0
- package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
- package/server/applications/users/services/users-queries.service.js +67 -68
- package/server/applications/users/services/users-queries.service.js.map +1 -1
- package/server/applications/users/users.module.js +2 -1
- package/server/applications/users/users.module.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.js +4 -4
- package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +6 -6
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
- package/server/applications/webdav/services/webdav-methods.service.js +3 -2
- package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
- package/server/applications/webdav/services/webdav-methods.service.spec.js +2 -2
- package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
- package/server/authentication/constants/auth-ldap.js +2 -0
- package/server/authentication/constants/auth-ldap.js.map +1 -1
- package/server/authentication/services/auth-methods/auth-method-ldap.service.js +34 -21
- package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +1 -1
- package/server/common/functions.js +0 -8
- package/server/common/functions.js.map +1 -1
- package/server/common/image.js +1 -0
- package/server/common/image.js.map +1 -1
- package/server/common/shared.js +18 -1
- package/server/common/shared.js.map +1 -1
- package/server/infrastructure/context/services/context-manager.service.js +3 -0
- package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
- package/server/infrastructure/websocket/adapters/cluster.adapter.js +4 -4
- package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
- package/static/3rdpartylicenses.txt +1393 -44
- package/static/assets/favicon.svg +2 -25
- package/static/assets/logo-dark.svg +2 -32
- package/static/assets/logo.svg +2 -32
- package/static/assets/mimes/application-sql.svg +29 -1
- package/static/assets/mimes/application-x-sql.svg +29 -0
- package/static/assets/mimes/image-bmp.svg +12 -0
- package/static/assets/pdfjs/build/pdf.mjs +4869 -4454
- package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.sandbox.mjs +3 -3
- package/static/assets/pdfjs/build/pdf.sandbox.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.worker.mjs +885 -596
- package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
- package/static/assets/pdfjs/version +1 -1
- package/static/assets/pdfjs/web/locale/be/viewer.ftl +40 -0
- package/static/assets/pdfjs/web/locale/bg/viewer.ftl +2 -0
- package/static/assets/pdfjs/web/locale/cs/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/cy/viewer.ftl +43 -0
- package/static/assets/pdfjs/web/locale/da/viewer.ftl +39 -0
- package/static/assets/pdfjs/web/locale/de/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +43 -0
- package/static/assets/pdfjs/web/locale/el/viewer.ftl +39 -0
- package/static/assets/pdfjs/web/locale/en-CA/viewer.ftl +35 -0
- package/static/assets/pdfjs/web/locale/en-GB/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +2 -2
- package/static/assets/pdfjs/web/locale/eo/viewer.ftl +39 -0
- package/static/assets/pdfjs/web/locale/es-AR/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/es-CL/viewer.ftl +39 -0
- package/static/assets/pdfjs/web/locale/es-ES/viewer.ftl +72 -0
- package/static/assets/pdfjs/web/locale/es-MX/viewer.ftl +120 -0
- package/static/assets/pdfjs/web/locale/eu/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/fi/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/fr/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/fur/viewer.ftl +77 -0
- package/static/assets/pdfjs/web/locale/fy-NL/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/gn/viewer.ftl +39 -0
- package/static/assets/pdfjs/web/locale/he/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/hsb/viewer.ftl +43 -0
- package/static/assets/pdfjs/web/locale/hu/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/hy-AM/viewer.ftl +1 -1
- package/static/assets/pdfjs/web/locale/ia/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/it/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/ja/viewer.ftl +32 -0
- package/static/assets/pdfjs/web/locale/ka/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/kab/viewer.ftl +73 -0
- package/static/assets/pdfjs/web/locale/kk/viewer.ftl +21 -0
- package/static/assets/pdfjs/web/locale/ko/viewer.ftl +38 -1
- package/static/assets/pdfjs/web/locale/nb-NO/viewer.ftl +39 -0
- package/static/assets/pdfjs/web/locale/nl/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/nn-NO/viewer.ftl +37 -0
- package/static/assets/pdfjs/web/locale/pa-IN/viewer.ftl +37 -0
- package/static/assets/pdfjs/web/locale/pl/viewer.ftl +39 -0
- package/static/assets/pdfjs/web/locale/pt-BR/viewer.ftl +39 -0
- package/static/assets/pdfjs/web/locale/rm/viewer.ftl +73 -0
- package/static/assets/pdfjs/web/locale/ro/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/ru/viewer.ftl +42 -0
- package/static/assets/pdfjs/web/locale/sc/viewer.ftl +6 -0
- package/static/assets/pdfjs/web/locale/sk/viewer.ftl +43 -0
- package/static/assets/pdfjs/web/locale/sl/viewer.ftl +42 -1
- package/static/assets/pdfjs/web/locale/sq/viewer.ftl +77 -0
- package/static/assets/pdfjs/web/locale/sv-SE/viewer.ftl +41 -0
- package/static/assets/pdfjs/web/locale/tg/viewer.ftl +39 -0
- package/static/assets/pdfjs/web/locale/th/viewer.ftl +35 -0
- package/static/assets/pdfjs/web/locale/tr/viewer.ftl +39 -0
- package/static/assets/pdfjs/web/locale/vi/viewer.ftl +42 -5
- package/static/assets/pdfjs/web/locale/zh-CN/viewer.ftl +35 -0
- package/static/assets/pdfjs/web/locale/zh-TW/viewer.ftl +37 -0
- package/static/assets/pdfjs/web/viewer.css +141 -110
- package/static/assets/pdfjs/web/viewer.html +7 -7
- package/static/assets/pdfjs/web/viewer.mjs +97 -14
- package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
- package/static/chunk-22DWHRCL.js +1 -0
- package/static/chunk-23UUFZSR.js +1 -0
- package/static/{chunk-MTVSJTIW.js → chunk-24Q7OUU2.js} +1 -1
- package/static/chunk-25QTY2GI.js +1 -0
- package/static/chunk-2E7IJZLL.js +1 -0
- package/static/chunk-2FC5EKS5.js +1 -0
- package/static/chunk-2FOWUJQF.js +1 -0
- package/static/chunk-2XPHUNYN.js +1 -0
- package/static/chunk-32L7RG2G.js +1 -0
- package/static/chunk-3IISSX63.js +1 -0
- package/static/chunk-3OHSTP3R.js +1 -0
- package/static/chunk-42L6C5MT.js +1 -0
- package/static/chunk-4AGQL5GV.js +1 -0
- package/static/chunk-4BPSQMI2.js +1 -0
- package/static/chunk-4FDRWZWT.js +1 -0
- package/static/chunk-4FJUCMEG.js +1 -0
- package/static/chunk-4GCCF6PF.js +1 -0
- package/static/chunk-4ORP3SBY.js +1 -0
- package/static/chunk-4QBOHIC3.js +1 -0
- package/static/chunk-4YT6K5KY.js +1 -0
- package/static/chunk-556I6YIW.js +1 -0
- package/static/chunk-5DPIGJU4.js +1 -0
- package/static/chunk-5HNQLBSW.js +3 -0
- package/static/chunk-5IL7C45D.js +1 -0
- package/static/chunk-5KJXGMKR.js +1 -0
- package/static/chunk-5SPGSHKL.js +1 -0
- package/static/chunk-5WCQBTXW.js +1 -0
- package/static/chunk-5XUIPWOH.js +1 -0
- package/static/chunk-62WT7PI3.js +1 -0
- package/static/chunk-6F6OMQ5H.js +1 -0
- package/static/chunk-6I5BGQHT.js +1 -0
- package/static/chunk-6NOS45DG.js +1 -0
- package/static/chunk-6OKLPRCD.js +1 -0
- package/static/chunk-6VEJCG43.js +1 -0
- package/static/chunk-77SS36Z2.js +1 -0
- package/static/chunk-7AXEPO3G.js +1 -0
- package/static/chunk-7CFSJ4BO.js +1 -0
- package/static/chunk-7CKHC72R.js +1 -0
- package/static/chunk-7DUTYOJG.js +1 -0
- package/static/chunk-7HKFYRPF.js +1 -0
- package/static/chunk-7NZJZATZ.js +1 -0
- package/static/chunk-AADK5D2H.js +1 -0
- package/static/chunk-ACUF7IKP.js +1 -0
- package/static/chunk-AGREZPV4.js +1 -0
- package/static/chunk-ATBJWFA3.js +1 -0
- package/static/chunk-ATXLZN2B.js +1 -0
- package/static/chunk-AZ5TF5Y3.js +1 -0
- package/static/chunk-BBHYIURC.js +1 -0
- package/static/chunk-BHZEPHRI.js +13 -0
- package/static/chunk-BQZWSZNN.js +1 -0
- package/static/chunk-BSB4VROD.js +2 -0
- package/static/chunk-BYWSTP3P.js +1 -0
- package/static/chunk-C3AAEQKW.js +1 -0
- package/static/chunk-CCGGCHGN.js +1 -0
- package/static/chunk-CFTKW432.js +1 -0
- package/static/chunk-CNOVT6KU.js +1 -0
- package/static/chunk-D56H3XE2.js +1 -0
- package/static/chunk-DFOOSIIA.js +1 -0
- package/static/chunk-DHFQIFOF.js +1 -0
- package/static/{chunk-3GMLWAFZ.js → chunk-DIC2MVRI.js} +1 -1
- package/static/chunk-DJDRX53V.js +2 -0
- package/static/chunk-DKGXUMLT.js +1 -0
- package/static/chunk-DRHPEERW.js +2 -0
- package/static/chunk-DWYP6ZGG.js +1 -0
- package/static/chunk-EDJAISWO.js +13 -0
- package/static/chunk-EIYRBM4J.js +1 -0
- package/static/chunk-EKEGRXCV.js +7 -0
- package/static/chunk-EL6QL4TP.js +1 -0
- package/static/chunk-ERDZ7IVF.js +1 -0
- package/static/chunk-EVQKKVUZ.js +1 -0
- package/static/chunk-F2XG7EWI.js +1 -0
- package/static/chunk-F672FY5I.js +1 -0
- package/static/chunk-F6V37MKG.js +1 -0
- package/static/chunk-F7TXTNZC.js +1 -0
- package/static/chunk-FCGTI42I.js +1 -0
- package/static/chunk-FQHOSSCO.js +1 -0
- package/static/chunk-FTSIPHMG.js +1 -0
- package/static/chunk-GAGHHYLF.js +1 -0
- package/static/{chunk-JPT5WEAT.js → chunk-GOJYWL2M.js} +1 -1
- package/static/chunk-H6WOTGQ5.js +1 -0
- package/static/{chunk-CHJ64RJM.js → chunk-H6ZXFINQ.js} +1 -1
- package/static/chunk-HC7F57NA.js +1 -0
- package/static/chunk-HHWXIK2M.js +7 -0
- package/static/chunk-HKRGIRKB.js +3 -0
- package/static/chunk-HNMGPG72.js +1 -0
- package/static/chunk-HS4S6BV3.js +1 -0
- package/static/chunk-IJ7K7ATQ.js +1 -0
- package/static/chunk-IOIBQGHN.js +562 -0
- package/static/chunk-ITVA26X2.js +2 -0
- package/static/chunk-J6YSFHLZ.js +1 -0
- package/static/chunk-JAEJ6IMV.js +1 -0
- package/static/chunk-JB5R6V33.js +1 -0
- package/static/chunk-JF6WIV6M.js +1 -0
- package/static/chunk-JGB4LLUT.js +1 -0
- package/static/chunk-JGXVTKLG.js +1 -0
- package/static/chunk-JMYAD7E2.js +1 -0
- package/static/chunk-JSE63Q5X.js +1 -0
- package/static/chunk-JVV3ZL6L.js +1 -0
- package/static/chunk-JXZCNFW7.js +1 -0
- package/static/chunk-KAVP6UXH.js +1 -0
- package/static/{chunk-3R74L4UU.js → chunk-KDEEERWZ.js} +1 -1
- package/static/chunk-KHRF67SG.js +1 -0
- package/static/chunk-KLOUBIO4.js +1 -0
- package/static/chunk-KMF3ZRAO.js +1 -0
- package/static/chunk-KNZ3AQPR.js +1 -0
- package/static/chunk-KT3TWCST.js +1 -0
- package/static/chunk-L6SYG23T.js +1 -0
- package/static/chunk-LJSVNPPQ.js +1 -0
- package/static/{chunk-LNTUR3GU.js → chunk-LRDKG274.js} +1 -1
- package/static/chunk-LRQSPCYZ.js +1 -0
- package/static/chunk-LUSVISM6.js +1 -0
- package/static/chunk-LXQGVNU2.js +1 -0
- package/static/{chunk-LVSNIS5P.js → chunk-LYZGJZNP.js} +1 -1
- package/static/chunk-LZKI5P5T.js +1 -0
- package/static/chunk-M4XL3JN5.js +6 -0
- package/static/{chunk-UNCPXHHT.js → chunk-MGWG7OD7.js} +1 -1
- package/static/chunk-MKUUWY6Y.js +1 -0
- package/static/{chunk-VJTXJ43D.js → chunk-MNNCSSHN.js} +1 -1
- package/static/chunk-MR3U7TKQ.js +1 -0
- package/static/chunk-MRF3CNLZ.js +1 -0
- package/static/chunk-MRMSMTWD.js +1 -0
- package/static/chunk-MVZJSG5R.js +1 -0
- package/static/chunk-MYM43ENO.js +1 -0
- package/static/chunk-N3P6P6GW.js +7 -0
- package/static/chunk-NAH4V2R6.js +2 -0
- package/static/chunk-NBBDVVUF.js +1 -0
- package/static/chunk-NMF2ZFBE.js +1 -0
- package/static/chunk-NN4ONTOT.js +1 -0
- package/static/chunk-NOPACN4F.js +1 -0
- package/static/chunk-NYJPOP4L.js +1 -0
- package/static/chunk-OJCAIKUK.js +1 -0
- package/static/chunk-OQRWXCLY.js +1 -0
- package/static/chunk-PCFH5HCI.js +2 -0
- package/static/chunk-PG54TWBO.js +4 -0
- package/static/chunk-PJF5XUTO.js +1 -0
- package/static/{chunk-FJE6BOFL.js → chunk-PSUAQBYM.js} +1 -1
- package/static/chunk-PTLYIUFW.js +1 -0
- package/static/chunk-PZGLDZZM.js +1 -0
- package/static/chunk-Q4VNZGFI.js +1 -0
- package/static/chunk-Q556XB3S.js +1 -0
- package/static/{chunk-PB4AIT7O.js → chunk-Q7IXRPOO.js} +1 -1
- package/static/chunk-Q7U2VPIS.js +1 -0
- package/static/chunk-QM6CQMEX.js +1 -0
- package/static/chunk-QMHUIHSR.js +1 -0
- package/static/chunk-QNFNXDSX.js +1 -0
- package/static/chunk-QVFPHTOH.js +1 -0
- package/static/chunk-R4MI25E2.js +1 -0
- package/static/chunk-R7JRAR3P.js +1 -0
- package/static/chunk-R7PNKQU2.js +1 -0
- package/static/chunk-RCAORRB7.js +1 -0
- package/static/chunk-RK7XRDNB.js +1 -0
- package/static/chunk-RO7SAOLK.js +1 -0
- package/static/chunk-RQUUINHV.js +1 -0
- package/static/chunk-RT3K6DZR.js +1 -0
- package/static/chunk-RUN556VW.js +1 -0
- package/static/chunk-RX3YQ67K.js +1 -0
- package/static/chunk-S6EVLDHA.js +5 -0
- package/static/chunk-S7S5M3AZ.js +1 -0
- package/static/chunk-SBLNYV74.js +1 -0
- package/static/chunk-SIZCHHUA.js +1 -0
- package/static/chunk-SRBOO7AO.js +1 -0
- package/static/{chunk-PVDHBQRM.js → chunk-STA7NTYL.js} +1 -1
- package/static/chunk-T3YI3BSS.js +1 -0
- package/static/chunk-T74SMT7I.js +1 -0
- package/static/chunk-TAL3RTTQ.js +1 -0
- package/static/chunk-TJZKTNNS.js +1 -0
- package/static/chunk-UJTFWZEC.js +1 -0
- package/static/chunk-UPGVU5LG.js +1 -0
- package/static/chunk-UQ6O3I6W.js +1 -0
- package/static/{chunk-5NMSIIQB.js → chunk-V43RGNXA.js} +1 -1
- package/static/chunk-VWIRXLNE.js +1 -0
- package/static/chunk-VZMVGIVW.js +1 -0
- package/static/chunk-VZPCXSRG.js +2 -0
- package/static/chunk-WR3MA3L3.js +1 -0
- package/static/chunk-XCLK7NJL.js +1 -0
- package/static/{chunk-DSWEWLXJ.js → chunk-XCPDPB5G.js} +1 -1
- package/static/chunk-XEGHEUP5.js +1 -0
- package/static/chunk-XKEBQNQJ.js +1 -0
- package/static/chunk-XOF4UW3S.js +1 -0
- package/static/chunk-XOTKK2NJ.js +1 -0
- package/static/chunk-XX7JXKA6.js +1 -0
- package/static/chunk-Y2I36A4K.js +1 -0
- package/static/chunk-Y44XDRM5.js +1 -0
- package/static/{chunk-QO6BTONN.js → chunk-Y4MAPE2C.js} +1 -1
- package/static/chunk-Y5RLD72B.js +1 -0
- package/static/{chunk-DPUVSXRB.js → chunk-Y5XTRCFK.js} +1 -1
- package/static/chunk-Y63UUJGJ.js +1 -0
- package/static/chunk-YBNAC7QM.js +1 -0
- package/static/chunk-YCTCESL4.js +1 -0
- package/static/chunk-YMAN4LIU.js +1 -0
- package/static/chunk-YTDE6SXT.js +1 -0
- package/static/chunk-YZPIUJB3.js +1 -0
- package/static/chunk-ZCOWBVOT.js +1 -0
- package/static/chunk-ZHRYYMYE.js +1 -0
- package/static/chunk-ZNXTOQFG.js +1 -0
- package/static/{chunk-URHTCJ7G.js → chunk-ZQLBPLXI.js} +1 -1
- package/static/favicon.ico +0 -0
- package/static/index.html +2 -2
- package/static/main-3PLRDZTO.js +11 -0
- package/static/styles-Q4OZOSSK.css +1 -0
- package/server/applications/notifications/interfaces/user-mail-notification.js.map +0 -1
- package/static/assets/codemirror/mode/apl/apl.js +0 -174
- package/static/assets/codemirror/mode/asciiarmor/asciiarmor.js +0 -74
- package/static/assets/codemirror/mode/asn.1/asn.1.js +0 -204
- package/static/assets/codemirror/mode/asterisk/asterisk.js +0 -220
- package/static/assets/codemirror/mode/brainfuck/brainfuck.js +0 -85
- package/static/assets/codemirror/mode/clike/clike.js +0 -942
- package/static/assets/codemirror/mode/clojure/clojure.js +0 -293
- package/static/assets/codemirror/mode/cmake/cmake.js +0 -97
- package/static/assets/codemirror/mode/cobol/cobol.js +0 -255
- package/static/assets/codemirror/mode/coffeescript/coffeescript.js +0 -359
- package/static/assets/codemirror/mode/commonlisp/commonlisp.js +0 -125
- package/static/assets/codemirror/mode/crystal/crystal.js +0 -433
- package/static/assets/codemirror/mode/css/css.js +0 -862
- package/static/assets/codemirror/mode/cypher/cypher.js +0 -152
- package/static/assets/codemirror/mode/d/d.js +0 -223
- package/static/assets/codemirror/mode/dart/dart.js +0 -168
- package/static/assets/codemirror/mode/diff/diff.js +0 -47
- package/static/assets/codemirror/mode/django/django.js +0 -356
- package/static/assets/codemirror/mode/dockerfile/dockerfile.js +0 -211
- package/static/assets/codemirror/mode/dtd/dtd.js +0 -142
- package/static/assets/codemirror/mode/dylan/dylan.js +0 -352
- package/static/assets/codemirror/mode/ebnf/ebnf.js +0 -195
- package/static/assets/codemirror/mode/ecl/ecl.js +0 -206
- package/static/assets/codemirror/mode/eiffel/eiffel.js +0 -160
- package/static/assets/codemirror/mode/elm/elm.js +0 -245
- package/static/assets/codemirror/mode/erlang/erlang.js +0 -619
- package/static/assets/codemirror/mode/factor/factor.js +0 -85
- package/static/assets/codemirror/mode/fcl/fcl.js +0 -173
- package/static/assets/codemirror/mode/forth/forth.js +0 -180
- package/static/assets/codemirror/mode/fortran/fortran.js +0 -188
- package/static/assets/codemirror/mode/gas/gas.js +0 -355
- package/static/assets/codemirror/mode/gfm/gfm.js +0 -129
- package/static/assets/codemirror/mode/gherkin/gherkin.js +0 -194
- package/static/assets/codemirror/mode/go/go.js +0 -187
- package/static/assets/codemirror/mode/groovy/groovy.js +0 -245
- package/static/assets/codemirror/mode/haml/haml.js +0 -161
- package/static/assets/codemirror/mode/handlebars/handlebars.js +0 -70
- package/static/assets/codemirror/mode/haskell/haskell.js +0 -268
- package/static/assets/codemirror/mode/haskell-literate/haskell-literate.js +0 -43
- package/static/assets/codemirror/mode/haxe/haxe.js +0 -515
- package/static/assets/codemirror/mode/htmlembedded/htmlembedded.js +0 -37
- package/static/assets/codemirror/mode/htmlmixed/htmlmixed.js +0 -153
- package/static/assets/codemirror/mode/http/http.js +0 -113
- package/static/assets/codemirror/mode/idl/idl.js +0 -290
- package/static/assets/codemirror/mode/javascript/javascript.js +0 -960
- package/static/assets/codemirror/mode/jinja2/jinja2.js +0 -193
- package/static/assets/codemirror/mode/jsx/jsx.js +0 -149
- package/static/assets/codemirror/mode/julia/julia.js +0 -390
- package/static/assets/codemirror/mode/livescript/livescript.js +0 -280
- package/static/assets/codemirror/mode/lua/lua.js +0 -160
- package/static/assets/codemirror/mode/markdown/markdown.js +0 -886
- package/static/assets/codemirror/mode/mathematica/mathematica.js +0 -176
- package/static/assets/codemirror/mode/mbox/mbox.js +0 -129
- package/static/assets/codemirror/mode/meta.js +0 -221
- package/static/assets/codemirror/mode/mirc/mirc.js +0 -193
- package/static/assets/codemirror/mode/mllike/mllike.js +0 -359
- package/static/assets/codemirror/mode/modelica/modelica.js +0 -245
- package/static/assets/codemirror/mode/mscgen/mscgen.js +0 -175
- package/static/assets/codemirror/mode/mumps/mumps.js +0 -148
- package/static/assets/codemirror/mode/nginx/nginx.js +0 -178
- package/static/assets/codemirror/mode/nsis/nsis.js +0 -95
- package/static/assets/codemirror/mode/ntriples/ntriples.js +0 -195
- package/static/assets/codemirror/mode/octave/octave.js +0 -139
- package/static/assets/codemirror/mode/oz/oz.js +0 -252
- package/static/assets/codemirror/mode/pascal/pascal.js +0 -136
- package/static/assets/codemirror/mode/pegjs/pegjs.js +0 -111
- package/static/assets/codemirror/mode/perl/perl.js +0 -836
- package/static/assets/codemirror/mode/php/php.js +0 -234
- package/static/assets/codemirror/mode/pig/pig.js +0 -178
- package/static/assets/codemirror/mode/powershell/powershell.js +0 -398
- package/static/assets/codemirror/mode/properties/properties.js +0 -78
- package/static/assets/codemirror/mode/protobuf/protobuf.js +0 -72
- package/static/assets/codemirror/mode/pug/pug.js +0 -591
- package/static/assets/codemirror/mode/puppet/puppet.js +0 -220
- package/static/assets/codemirror/mode/python/python.js +0 -402
- package/static/assets/codemirror/mode/q/q.js +0 -139
- package/static/assets/codemirror/mode/r/r.js +0 -190
- package/static/assets/codemirror/mode/rpm/changes/index.html +0 -66
- package/static/assets/codemirror/mode/rpm/rpm.js +0 -109
- package/static/assets/codemirror/mode/rst/rst.js +0 -557
- package/static/assets/codemirror/mode/ruby/ruby.js +0 -303
- package/static/assets/codemirror/mode/rust/rust.js +0 -72
- package/static/assets/codemirror/mode/sas/sas.js +0 -303
- package/static/assets/codemirror/mode/sass/sass.js +0 -459
- package/static/assets/codemirror/mode/scheme/scheme.js +0 -284
- package/static/assets/codemirror/mode/shell/shell.js +0 -168
- package/static/assets/codemirror/mode/sieve/sieve.js +0 -193
- package/static/assets/codemirror/mode/slim/slim.js +0 -575
- package/static/assets/codemirror/mode/smalltalk/smalltalk.js +0 -168
- package/static/assets/codemirror/mode/smarty/smarty.js +0 -225
- package/static/assets/codemirror/mode/solr/solr.js +0 -104
- package/static/assets/codemirror/mode/soy/soy.js +0 -665
- package/static/assets/codemirror/mode/sparql/sparql.js +0 -184
- package/static/assets/codemirror/mode/spreadsheet/spreadsheet.js +0 -112
- package/static/assets/codemirror/mode/sql/sql.js +0 -529
- package/static/assets/codemirror/mode/stex/stex.js +0 -264
- package/static/assets/codemirror/mode/stylus/stylus.js +0 -775
- package/static/assets/codemirror/mode/swift/swift.js +0 -221
- package/static/assets/codemirror/mode/tcl/tcl.js +0 -140
- package/static/assets/codemirror/mode/textile/textile.js +0 -469
- package/static/assets/codemirror/mode/tiddlywiki/tiddlywiki.css +0 -14
- package/static/assets/codemirror/mode/tiddlywiki/tiddlywiki.js +0 -308
- package/static/assets/codemirror/mode/tiki/tiki.css +0 -26
- package/static/assets/codemirror/mode/tiki/tiki.js +0 -312
- package/static/assets/codemirror/mode/toml/toml.js +0 -88
- package/static/assets/codemirror/mode/tornado/tornado.js +0 -68
- package/static/assets/codemirror/mode/troff/troff.js +0 -84
- package/static/assets/codemirror/mode/ttcn/ttcn.js +0 -283
- package/static/assets/codemirror/mode/ttcn-cfg/ttcn-cfg.js +0 -214
- package/static/assets/codemirror/mode/turtle/turtle.js +0 -162
- package/static/assets/codemirror/mode/twig/twig.js +0 -141
- package/static/assets/codemirror/mode/vb/vb.js +0 -275
- package/static/assets/codemirror/mode/vbscript/vbscript.js +0 -350
- package/static/assets/codemirror/mode/velocity/velocity.js +0 -202
- package/static/assets/codemirror/mode/verilog/verilog.js +0 -781
- package/static/assets/codemirror/mode/vhdl/vhdl.js +0 -189
- package/static/assets/codemirror/mode/vue/vue.js +0 -77
- package/static/assets/codemirror/mode/wast/wast.js +0 -132
- package/static/assets/codemirror/mode/webidl/webidl.js +0 -195
- package/static/assets/codemirror/mode/xml/xml.js +0 -417
- package/static/assets/codemirror/mode/xquery/xquery.js +0 -448
- package/static/assets/codemirror/mode/yacas/yacas.js +0 -204
- package/static/assets/codemirror/mode/yaml/yaml.js +0 -120
- package/static/assets/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +0 -72
- package/static/assets/codemirror/mode/z80/z80.js +0 -116
- package/static/chunk-2KLC4T2Z.js +0 -1
- package/static/chunk-2VMSXRCB.js +0 -12
- package/static/chunk-3OHSRRKH.js +0 -4
- package/static/chunk-3R4WKOHQ.js +0 -1
- package/static/chunk-3XVM35O2.js +0 -1
- package/static/chunk-3YVRP3VM.js +0 -2
- package/static/chunk-5UKZLU5H.js +0 -1
- package/static/chunk-AF24EYXU.js +0 -1
- package/static/chunk-AKQVEHO6.js +0 -2
- package/static/chunk-BCVX464U.js +0 -2
- package/static/chunk-BQV4FRM6.js +0 -1
- package/static/chunk-CETH7UYS.js +0 -1
- package/static/chunk-DIT6W7VM.js +0 -562
- package/static/chunk-DKSEQTMX.js +0 -1
- package/static/chunk-FZ3JPGYZ.js +0 -1
- package/static/chunk-IQSKQXC3.js +0 -1
- package/static/chunk-ITUFI2BJ.js +0 -1
- package/static/chunk-LCTZJ537.js +0 -1
- package/static/chunk-LK2UCQJ6.js +0 -1
- package/static/chunk-LP5TBXEN.js +0 -7
- package/static/chunk-N3U6637P.js +0 -1
- package/static/chunk-NNV4OXSB.js +0 -1
- package/static/chunk-O6FYXVHI.js +0 -1
- package/static/chunk-OOGP4WSH.js +0 -2
- package/static/chunk-PCWDQPOM.js +0 -2
- package/static/chunk-PNR6M34W.js +0 -1
- package/static/chunk-Q5KM7LTX.js +0 -1
- package/static/chunk-QHC6ZPQ4.js +0 -1
- package/static/chunk-QMRBZHE4.js +0 -1
- package/static/chunk-QSJRY3TF.js +0 -1
- package/static/chunk-QUUIRSYT.js +0 -1
- package/static/chunk-RFH46UW3.js +0 -1
- package/static/chunk-RSXHRKM5.js +0 -1
- package/static/chunk-RV3VZJPZ.js +0 -1
- package/static/chunk-S7HNXVRB.js +0 -1
- package/static/chunk-SBZ572Q4.js +0 -2
- package/static/chunk-SJR5R3Y4.js +0 -1
- package/static/chunk-SLHTEGRU.js +0 -1
- package/static/chunk-SSFF27P2.js +0 -24
- package/static/chunk-V3LHHZYN.js +0 -1
- package/static/chunk-VQQKMY2C.js +0 -1
- package/static/chunk-WSSU2HXE.js +0 -1
- package/static/chunk-XDZGW64M.js +0 -3
- package/static/chunk-XTRDKGKG.js +0 -1
- package/static/chunk-YLWTEC3X.js +0 -1
- package/static/chunk-Z5J5F5SX.js +0 -1
- package/static/main-4H5BJY3J.js +0 -9
- package/static/scripts-WRDOQIU5.js +0 -24
- package/static/styles-2C2UNCNB.css +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,17 +1,62 @@
|
|
|
1
|
-
## [1.8.1](https://github.com/Sync-in/server/compare/v1.8.0...v1.8.1) (2025-10-30)
|
|
2
1
|
|
|
3
|
-
|
|
2
|
+
## [1.9.0](https://github.com/Sync-in/server/compare/v1.8.1...v1.9.0) (2025-11-24)
|
|
3
|
+
|
|
4
|
+
### Highlights 1.9
|
|
5
|
+
|
|
6
|
+
* 🎨 **Visual identity updated** — refreshed branding.
|
|
7
|
+
* 🖼️ **Enhanced image viewer** — browse all images in a directory, start slideshows, use fullscreen mode, and view detailed properties.
|
|
8
|
+
* ✏️ **Native text editor** — search, syntax highlighting, undo/redo, and lock/unlock capabilities built directly into the UI.
|
|
9
|
+
* 🔐 **Improved file lock management** — users can request unlocks from lock owners, and file owners can now remove locks themselves.
|
|
10
|
+
* ⚠️ **Overwrite confirmation dialogs** — added confirmation prompts for uploads, renaming, copying, and moving files to prevent accidental overwrites.
|
|
11
|
+
|
|
12
|
+
➡️ [More details](https://sync-in.com/news/sync-in-server-1-9)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **admin:** add server update notification support ([fc72430](https://github.com/Sync-in/server/commit/fc72430d69b9d2fb31d24ef680efd602a2c94d87))
|
|
18
|
+
* **backend:auth:** allow cn LDAP attribute and add AD-specific logic ([6998b1a](https://github.com/Sync-in/server/commit/6998b1af24bc6a360a146f71d8d264c582e89edc))
|
|
19
|
+
* **backend:auth:** Allow the LDAP `mail` attribute to be used as the login attribute, and allow users to authenticate using either the login attribute or their email address ([a683b57](https://github.com/Sync-in/server/commit/a683b5760ce9386b51c7e21e8699bb8a8d9335c5))
|
|
20
|
+
* **backend:files:** improve file upload handling with comprehensive overwrite support and directory conflict resolution ([e69a687](https://github.com/Sync-in/server/commit/e69a687071c0d5e7fc8bd76cef820c87a35e852c))
|
|
21
|
+
* **docker:onlyoffice:** update DocumentServer image to v9.1 ([c64a3ae](https://github.com/Sync-in/server/commit/c64a3aeafc70b275acc9d2fa50a5b30517325673))
|
|
22
|
+
* **files:** add directory size retrieval with UI and API integration ([4528b43](https://github.com/Sync-in/server/commit/4528b438e0819d3e6d9f72c11fab931257cadad0))
|
|
23
|
+
* **files:** add overwrite confirmation dialog for file rename and update API to support overwrite behavior ([c7c0d96](https://github.com/Sync-in/server/commit/c7c0d96d46144062cda739e8f32726f27deb8911))
|
|
24
|
+
* **files:** add overwrite confirmation dialog for file uploads and adapt API to support overwrite functionality ([d39822f](https://github.com/Sync-in/server/commit/d39822fd2d787b2b3477214c5ab885e7f712264e))
|
|
25
|
+
* **files:** add unlock request feature and enable force unlock for file owners ([7441337](https://github.com/Sync-in/server/commit/7441337dd0035ef681ece616d3e21870134ea511))
|
|
26
|
+
* **files:** enable locking and unlocking of edited files with improved handling and UI integration ([24ad66b](https://github.com/Sync-in/server/commit/24ad66b034e3287a5bc81c504b383539e025fc10))
|
|
27
|
+
* **files:** improve file handling with edit mode toggle, unsaved changes warning, enhanced modal logic, and updated constants ([bcc3ad2](https://github.com/Sync-in/server/commit/bcc3ad28bd26b042de50506c6a5bb71aa1e720ca))
|
|
28
|
+
* **frontend:config:** enhance notifications with `maxOpened` and `autoDismiss` properties ([cf850bf](https://github.com/Sync-in/server/commit/cf850bf43f61306e7bb2ee5306741f2628f2d89a))
|
|
29
|
+
* **frontend:files:** add ability to edit basic text files ([85b56e2](https://github.com/Sync-in/server/commit/85b56e23d5c8c11ed62ef281bc2370965090305f))
|
|
30
|
+
* **frontend:files:** add fulscreen button in image viewer ([b834618](https://github.com/Sync-in/server/commit/b8346182fd3d01061573111bf80ba9aecca86e23))
|
|
31
|
+
* **frontend:files:** add new translations and improve text viewer with updated read-only state handling and line wrapping ([e90c91e](https://github.com/Sync-in/server/commit/e90c91ec48e0d46cbbb4245a0e2fc53549cc8e3a))
|
|
32
|
+
* **frontend:files:** add overwrite confirmation dialog for copy/move actions ([fa2d601](https://github.com/Sync-in/server/commit/fa2d601aba4aa0ad1e4f7142212ee64db3e73a96))
|
|
33
|
+
* **frontend:files:** add undo and redo functionality with i18n updates and improved editor error handling ([daccfbc](https://github.com/Sync-in/server/commit/daccfbcf7c01fe71421c696a4857a966f9bfef9b))
|
|
34
|
+
* **frontend:files:** enhance overwrite handling by updating MIME type on rename and improving file model consistency and UI visuals ([f68a073](https://github.com/Sync-in/server/commit/f68a07395487dd27779fa9ec52943ccbd7e1f722))
|
|
35
|
+
* **frontend:files:** enhance text viewer with search panel toggle and keyboard shortcuts handling ([5b411f0](https://github.com/Sync-in/server/commit/5b411f084913ab2ece2d499d85e3fab3b1c26f29))
|
|
36
|
+
* **frontend:files:** image viewer slideshow ([49bbd4e](https://github.com/Sync-in/server/commit/49bbd4e2ea325832e30a97b969b3043c8d294ebc))
|
|
37
|
+
* **frontend:files:** improve text viewer with line wrapping, saving state, and enhanced search panel handling ([e5f0863](https://github.com/Sync-in/server/commit/e5f0863bbd921ef97879ff076475aaa46a21d051))
|
|
38
|
+
* **frontend:files:** improve text viewer with save error handling and updated file upload logic ([034c7a4](https://github.com/Sync-in/server/commit/034c7a4db4961433c2d9223229edbee345f2ee67))
|
|
39
|
+
* **frontend:files:** start implementing image viewer and folder slideshow ([7a65927](https://github.com/Sync-in/server/commit/7a65927bc3bcfee88372f0a913db68c0daa1f768))
|
|
40
|
+
* **frontend:links:** update navigation to enter spaces and shares directly instead of selecting them ([fd64265](https://github.com/Sync-in/server/commit/fd6426566c0275daaf82dc4ae21809e6682b90b8))
|
|
41
|
+
* **frontend:modals:** improve modal animations, lifecycle handling, and state management ([bad0696](https://github.com/Sync-in/server/commit/bad06964b65586b751ce0c9cd4e163d921828a63))
|
|
42
|
+
|
|
4
43
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
44
|
+
### Bug Fixes
|
|
45
|
+
|
|
46
|
+
* **backend:common:** prevent errors on invalid image metadata with `failOn: 'none'` option in sharp ([901fdf8](https://github.com/Sync-in/server/commit/901fdf8cf9ede111cd821363a2a28470c5d9d314))
|
|
47
|
+
* **backend:files:** avoid copy failures when sample documents are read-only and files are written to a CIFS share by falling back to stream copy ([3b734b8](https://github.com/Sync-in/server/commit/3b734b82b8d02072aa09d941ffd7b911cfcf3950))
|
|
48
|
+
* **backend:files:** correct `isDir` SQL logic to handle external paths without associated file IDs ([b3ce7d4](https://github.com/Sync-in/server/commit/b3ce7d4ae66556d455bc5d5495ed2fe070c15efc))
|
|
49
|
+
* **backend:files:** correct directory flag and ensure consistent file move operation in trash handling ([e85ead7](https://github.com/Sync-in/server/commit/e85ead7e7f8a327466279af2d103d3a4d5644b80))
|
|
50
|
+
* **backend:files:** enable `cacheControl` to ensure consistent client-side caching behavior ([25ab568](https://github.com/Sync-in/server/commit/25ab56808b7f4507a09c570bc7e7623077d5c594))
|
|
51
|
+
* **backend:files:** ensure locks are visible on anchored and shared files ([6445333](https://github.com/Sync-in/server/commit/64453339e1ae7f4e8a8e8f061effbccaf5070aa6))
|
|
52
|
+
* **backend:files:** set `maxAge` to 0 to enforce immediate cache invalidation ([293f34c](https://github.com/Sync-in/server/commit/293f34cb0e4bf7ac46bde6b4dc2a2432c57c04ec))
|
|
53
|
+
* **backend:links:** restore access to anchored files from an external location when shared via a link ([f61f09f](https://github.com/Sync-in/server/commit/f61f09fdeefaff2492ae39423ef0958962562db3))
|
|
54
|
+
* **backend:shares:** ensure correct file path for root space shares owned by user ([f5adb55](https://github.com/Sync-in/server/commit/f5adb55612622875ccfcb29ebcc754c974f186fd))
|
|
55
|
+
* **backend:websocket:** prevent server connection from closing on shutdown hooks ([8714644](https://github.com/Sync-in/server/commit/8714644f4d6d35d8d9297bc2f47e2e3eed485938))
|
|
56
|
+
* **frontend:drag:** prevent drag-and-drop actions in the shares list and ensure proper drag event handling ([f19ab4f](https://github.com/Sync-in/server/commit/f19ab4f7ed976d909cda323f1839d458a895ec3d))
|
|
57
|
+
* **frontend:files:** sync read-only value with opening mode in the text editor ([dfff2dc](https://github.com/Sync-in/server/commit/dfff2dcf152e049e25a3f07f92a41ea4a8af4805))
|
|
13
58
|
|
|
14
|
-
|
|
59
|
+
## [1.8.1](https://github.com/Sync-in/server/compare/v1.8.0...v1.8.1) (2025-10-30)
|
|
15
60
|
|
|
16
61
|
### Bug Fixes
|
|
17
62
|
|
|
@@ -19,10 +19,10 @@ logger:
|
|
|
19
19
|
# stdout: if false logs are written to the run directory
|
|
20
20
|
# default: `true`
|
|
21
21
|
stdout: true
|
|
22
|
-
#
|
|
22
|
+
# Colorize output.
|
|
23
23
|
# default: `true`
|
|
24
24
|
colorize: true
|
|
25
|
-
#
|
|
25
|
+
# Path to the log file used when stdout is set to false
|
|
26
26
|
filePath:
|
|
27
27
|
mysql:
|
|
28
28
|
# required
|
|
@@ -33,20 +33,20 @@ cache:
|
|
|
33
33
|
# adapter: `mysql` | `redis`
|
|
34
34
|
# default: `mysql`
|
|
35
35
|
adapter: mysql
|
|
36
|
-
#
|
|
36
|
+
# TTL in seconds
|
|
37
37
|
# default: `60`
|
|
38
38
|
ttl: 60
|
|
39
|
-
#
|
|
39
|
+
# Redis adapter url
|
|
40
40
|
# default: `redis://127.0.0.1:6379`
|
|
41
41
|
redis: redis://127.0.0.1:6379
|
|
42
42
|
websocket:
|
|
43
43
|
# adapter: `cluster` (Node.js Workers: default) | `redis`
|
|
44
44
|
# default: `cluster`
|
|
45
45
|
adapter: cluster
|
|
46
|
-
#
|
|
46
|
+
# Cors origin allowed
|
|
47
47
|
# default: `*`
|
|
48
48
|
corsOrigin: '*'
|
|
49
|
-
#
|
|
49
|
+
# Redis adapter url
|
|
50
50
|
# default: `redis://127.0.0.1:6379`
|
|
51
51
|
redis: redis://127.0.0.1:6379
|
|
52
52
|
mail:
|
|
@@ -59,9 +59,9 @@ mail:
|
|
|
59
59
|
auth:
|
|
60
60
|
user: user
|
|
61
61
|
pass: password
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
#
|
|
62
|
+
# Defines if the connection should use SSL (if true) or not (if false)
|
|
63
|
+
# Note: setting `secure: false` does not necessarily mean messages are sent in plaintext
|
|
64
|
+
# If the server supports STARTTLS, the connection is usually upgraded to TLS automatically
|
|
65
65
|
# default: `false`
|
|
66
66
|
secure: false
|
|
67
67
|
# ignoreTLS: if true, disables the use of STARTTLS even if the server advertises it
|
|
@@ -70,28 +70,28 @@ mail:
|
|
|
70
70
|
# rejectUnauthorized: reject the connection if the server's TLS certificate is invalid
|
|
71
71
|
# default: false
|
|
72
72
|
rejectUnauthorized: false
|
|
73
|
-
#
|
|
73
|
+
# Enable logger
|
|
74
74
|
# default: `false`
|
|
75
75
|
logger: false
|
|
76
|
-
#
|
|
76
|
+
# Set log level to debug
|
|
77
77
|
# default: `false`
|
|
78
78
|
debug: false
|
|
79
79
|
auth:
|
|
80
80
|
# adapter : `mysql` | `ldap`
|
|
81
81
|
# default: `mysql`
|
|
82
82
|
method: mysql
|
|
83
|
-
#
|
|
84
|
-
#
|
|
85
|
-
#
|
|
83
|
+
# Key used to encrypt user secret keys in the database
|
|
84
|
+
# Optional but strongly recommended
|
|
85
|
+
# Warning: do not change or remove the encryption key after MFA activation, or the codes will become invalid
|
|
86
86
|
encryptionKey: changeEncryptionKeyWithStrongKey
|
|
87
|
-
#
|
|
87
|
+
# Multifactor authentication
|
|
88
88
|
mfa:
|
|
89
|
-
#
|
|
89
|
+
# TOTP configuration
|
|
90
90
|
totp:
|
|
91
|
-
#
|
|
91
|
+
# Enable TOTP authentication
|
|
92
92
|
# default: true
|
|
93
93
|
enabled: true
|
|
94
|
-
#
|
|
94
|
+
# Name displayed in the authentication app (FreeOTP, Proton Authenticator, Aegis Authenticator etc.)
|
|
95
95
|
# default: Sync-in
|
|
96
96
|
issuer: Sync-in
|
|
97
97
|
# cookie sameSite setting: `lax` | `strict`
|
|
@@ -99,14 +99,14 @@ auth:
|
|
|
99
99
|
cookieSameSite: strict
|
|
100
100
|
token:
|
|
101
101
|
access:
|
|
102
|
-
#
|
|
102
|
+
# Used for token and cookie signatures
|
|
103
103
|
# required
|
|
104
104
|
secret: changeAccessWithStrongSecret
|
|
105
105
|
# token expiration = cookie maxAge
|
|
106
106
|
# default: `30m`
|
|
107
107
|
expiration: 30m
|
|
108
108
|
refresh:
|
|
109
|
-
#
|
|
109
|
+
# Used for token and cookie signatures
|
|
110
110
|
# required
|
|
111
111
|
secret: changeRefreshWithStrongSecret
|
|
112
112
|
# token expiration = cookie maxAge
|
|
@@ -120,10 +120,13 @@ auth:
|
|
|
120
120
|
# filter, e.g: (acl=admin)
|
|
121
121
|
filter:
|
|
122
122
|
attributes:
|
|
123
|
-
#
|
|
123
|
+
# Login attribute used to construct the user's DN for binding.
|
|
124
|
+
# The value of this attribute is used as the naming attribute (first RDN) when forming the Distinguished Name (DN) during authentication
|
|
125
|
+
# login: `uid` | `cn` | `mail` | `sAMAccountName` | `userPrincipalName`, used to authenticate the user
|
|
124
126
|
# default: `uid`
|
|
125
127
|
login: uid
|
|
126
|
-
#
|
|
128
|
+
# Attribute used to retrieve the user's email address
|
|
129
|
+
# email: `mail` or `email`
|
|
127
130
|
# default: `mail`
|
|
128
131
|
email: mail
|
|
129
132
|
# adminGroup: The CN of a group containing Sync-in administrators (e.g., administrators)
|
|
@@ -148,14 +151,14 @@ applications:
|
|
|
148
151
|
# enable onlyoffice integration
|
|
149
152
|
# default: false
|
|
150
153
|
enabled: false
|
|
151
|
-
#
|
|
152
|
-
#
|
|
154
|
+
# For an external server (e.g., https://onlyoffice.domain.com), remember the url must be accessible from browser!
|
|
155
|
+
# If externalServer is empty (case of official docker compose), we use the local instance
|
|
153
156
|
# default: null
|
|
154
157
|
externalServer:
|
|
155
|
-
#
|
|
158
|
+
# Secret used for jwt tokens, it must be the same on the onlyoffice server
|
|
156
159
|
# required
|
|
157
160
|
secret: onlyOfficeSecret
|
|
158
|
-
#
|
|
161
|
+
# If you use https, set to `true`.
|
|
159
162
|
# default: `false`
|
|
160
163
|
verifySSL: false
|
|
161
164
|
appStore:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sync-in/server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "The secure, open-source platform for file storage, sharing, collaboration, and sync",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Johan Legrand",
|
|
@@ -80,29 +80,29 @@
|
|
|
80
80
|
"@knaadh/nestjs-drizzle-mysql2": "1.2.0",
|
|
81
81
|
"@lukeed/ms": "2.0.2",
|
|
82
82
|
"@nestjs/axios": "4.0.1",
|
|
83
|
-
"@nestjs/common": "11.1.
|
|
83
|
+
"@nestjs/common": "11.1.9",
|
|
84
84
|
"@nestjs/config": "4.0.2",
|
|
85
|
-
"@nestjs/core": "11.1.
|
|
85
|
+
"@nestjs/core": "11.1.9",
|
|
86
86
|
"@nestjs/jwt": "11.0.1",
|
|
87
87
|
"@nestjs/passport": "11.0.5",
|
|
88
|
-
"@nestjs/platform-fastify": "11.1.
|
|
89
|
-
"@nestjs/platform-socket.io": "11.1.
|
|
88
|
+
"@nestjs/platform-fastify": "11.1.9",
|
|
89
|
+
"@nestjs/platform-socket.io": "11.1.9",
|
|
90
90
|
"@nestjs/schedule": "6.0.1",
|
|
91
|
-
"@nestjs/websockets": "11.1.
|
|
91
|
+
"@nestjs/websockets": "11.1.9",
|
|
92
92
|
"@socket.io/cluster-adapter": "0.3.0",
|
|
93
93
|
"@socket.io/redis-adapter": "8.3.0",
|
|
94
94
|
"@types/text-to-svg": "3.1.4",
|
|
95
95
|
"archiver": "7.0.1",
|
|
96
|
-
"bcryptjs": "3.0.
|
|
96
|
+
"bcryptjs": "3.0.3",
|
|
97
97
|
"class-transformer": "0.5.1",
|
|
98
98
|
"class-validator": "0.14.2",
|
|
99
99
|
"deepmerge": "4.3.1",
|
|
100
|
-
"drizzle-kit": "0.31.
|
|
100
|
+
"drizzle-kit": "0.31.7",
|
|
101
101
|
"drizzle-orm": "0.44.7",
|
|
102
|
-
"fast-xml-parser": "5.3.
|
|
102
|
+
"fast-xml-parser": "5.3.2",
|
|
103
103
|
"fs-extra": "11.3.2",
|
|
104
104
|
"html-to-text": "9.0.5",
|
|
105
|
-
"js-yaml": "4.1.
|
|
105
|
+
"js-yaml": "4.1.1",
|
|
106
106
|
"ldapts": "8.0.9",
|
|
107
107
|
"mime-types": "3.0.1",
|
|
108
108
|
"mysql2": "3.15.3",
|
|
@@ -114,14 +114,14 @@
|
|
|
114
114
|
"passport": "0.7.0",
|
|
115
115
|
"pino-pretty": "13.1.2",
|
|
116
116
|
"qrcode-generator": "2.0.4",
|
|
117
|
-
"redis": "5.
|
|
118
|
-
"sax": "1.4.
|
|
119
|
-
"sharp": "0.34.
|
|
117
|
+
"redis": "5.10.0",
|
|
118
|
+
"sax": "1.4.3",
|
|
119
|
+
"sharp": "0.34.5",
|
|
120
120
|
"socket.io": "4.8.1",
|
|
121
|
-
"tar": "7.5.
|
|
121
|
+
"tar": "7.5.2",
|
|
122
122
|
"text-to-svg": "3.1.5",
|
|
123
123
|
"time2fa": "1.4.2",
|
|
124
|
-
"unpdf": "1.
|
|
124
|
+
"unpdf": "1.4.0",
|
|
125
125
|
"yauzl": "3.2.0"
|
|
126
126
|
}
|
|
127
127
|
}
|
package/server/app.constants.js
CHANGED
|
@@ -18,8 +18,17 @@ _export(exports, {
|
|
|
18
18
|
},
|
|
19
19
|
get CONTENT_SECURITY_POLICY () {
|
|
20
20
|
return CONTENT_SECURITY_POLICY;
|
|
21
|
+
},
|
|
22
|
+
get USER_AGENT () {
|
|
23
|
+
return USER_AGENT;
|
|
24
|
+
},
|
|
25
|
+
get VERSION () {
|
|
26
|
+
return VERSION;
|
|
21
27
|
}
|
|
22
28
|
});
|
|
29
|
+
const _packagejson = require("../../package.json");
|
|
30
|
+
const VERSION = _packagejson.version;
|
|
31
|
+
const USER_AGENT = `sync-in-server/${_packagejson.version}`;
|
|
23
32
|
const CONTENT_SECURITY_POLICY = (onlyOfficeServer)=>({
|
|
24
33
|
useDefaults: false,
|
|
25
34
|
directives: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../backend/src/app.constants.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nexport const CONTENT_SECURITY_POLICY = (onlyOfficeServer: string) => ({\n useDefaults: false,\n directives: {\n defaultSrc: [\"'self'\", onlyOfficeServer || ''],\n scriptSrc: [\"'self'\", \"'unsafe-inline'\", onlyOfficeServer || ''],\n styleSrc: [\"'self'\", \"'unsafe-inline'\"],\n imgSrc: [\"'self'\", 'data:'],\n fontSrc: [\"'self'\"]\n }\n})\n\nexport const CONNECT_ERROR_CODE = new Set(['ECONNREFUSED', 'ETIMEDOUT', 'ENOTFOUND'])\n"],"names":["CONNECT_ERROR_CODE","CONTENT_SECURITY_POLICY","onlyOfficeServer","useDefaults","directives","defaultSrc","scriptSrc","styleSrc","imgSrc","fontSrc","Set"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../backend/src/app.constants.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\nimport { version } from '../../package.json'\n\nexport const VERSION = version\nexport const USER_AGENT = `sync-in-server/${version}`\nexport const CONTENT_SECURITY_POLICY = (onlyOfficeServer: string) => ({\n useDefaults: false,\n directives: {\n defaultSrc: [\"'self'\", onlyOfficeServer || ''],\n scriptSrc: [\"'self'\", \"'unsafe-inline'\", onlyOfficeServer || ''],\n styleSrc: [\"'self'\", \"'unsafe-inline'\"],\n imgSrc: [\"'self'\", 'data:'],\n fontSrc: [\"'self'\"]\n }\n})\n\nexport const CONNECT_ERROR_CODE = new Set(['ECONNREFUSED', 'ETIMEDOUT', 'ENOTFOUND'])\n"],"names":["CONNECT_ERROR_CODE","CONTENT_SECURITY_POLICY","USER_AGENT","VERSION","version","onlyOfficeServer","useDefaults","directives","defaultSrc","scriptSrc","styleSrc","imgSrc","fontSrc","Set"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAgBYA;eAAAA;;QAXAC;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;;6BAFW;AAEjB,MAAMA,UAAUC,oBAAO;AACvB,MAAMF,aAAa,CAAC,eAAe,EAAEE,oBAAO,EAAE;AAC9C,MAAMH,0BAA0B,CAACI,mBAA8B,CAAA;QACpEC,aAAa;QACbC,YAAY;YACVC,YAAY;gBAAC;gBAAUH,oBAAoB;aAAG;YAC9CI,WAAW;gBAAC;gBAAU;gBAAmBJ,oBAAoB;aAAG;YAChEK,UAAU;gBAAC;gBAAU;aAAkB;YACvCC,QAAQ;gBAAC;gBAAU;aAAQ;YAC3BC,SAAS;gBAAC;aAAS;QACrB;IACF,CAAA;AAEO,MAAMZ,qBAAqB,IAAIa,IAAI;IAAC;IAAgB;IAAa;CAAY"}
|
package/server/app.module.js
CHANGED
|
@@ -16,6 +16,7 @@ const _axios = require("@nestjs/axios");
|
|
|
16
16
|
const _common = require("@nestjs/common");
|
|
17
17
|
const _config = require("@nestjs/config");
|
|
18
18
|
const _nestjspino = require("nestjs-pino");
|
|
19
|
+
const _appconstants = require("./app.constants");
|
|
19
20
|
const _appservice = require("./app.service");
|
|
20
21
|
const _applicationsmodule = require("./applications/applications.module");
|
|
21
22
|
const _authmodule = require("./authentication/auth.module");
|
|
@@ -59,6 +60,9 @@ AppModule = _ts_decorate([
|
|
|
59
60
|
_applicationsmodule.ApplicationsModule,
|
|
60
61
|
_axios.HttpModule.register({
|
|
61
62
|
global: true,
|
|
63
|
+
headers: {
|
|
64
|
+
'User-Agent': _appconstants.USER_AGENT
|
|
65
|
+
},
|
|
62
66
|
timeout: 5000,
|
|
63
67
|
maxRedirects: 5
|
|
64
68
|
})
|
package/server/app.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../backend/src/app.module.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { HttpModule } from '@nestjs/axios'\nimport { Module } from '@nestjs/common'\nimport { ConfigModule } from '@nestjs/config'\nimport { LoggerModule } from 'nestjs-pino'\nimport { AppService } from './app.service'\nimport { ApplicationsModule } from './applications/applications.module'\nimport { AuthModule } from './authentication/auth.module'\nimport { configuration, exportConfiguration } from './configuration/config.environment'\nimport { configLogger } from './configuration/config.logger'\nimport { CacheModule } from './infrastructure/cache/cache.module'\nimport { ContextModule } from './infrastructure/context/context.module'\nimport { DatabaseModule } from './infrastructure/database/database.module'\nimport { MailerModule } from './infrastructure/mailer/mailer.module'\nimport { SchedulerModule } from './infrastructure/scheduler/scheduler.module'\n\n@Module({\n imports: [\n ConfigModule.forRoot({ load: [exportConfiguration], validatePredefined: false, ignoreEnvFile: true, isGlobal: true }),\n LoggerModule.forRootAsync({\n useFactory: async () => ({\n pinoHttp: configLogger(configuration.logger)\n })\n }),\n AuthModule,\n DatabaseModule,\n CacheModule,\n MailerModule,\n ContextModule,\n SchedulerModule.register(),\n ApplicationsModule,\n HttpModule.register({\n global: true,\n timeout: 5000,\n maxRedirects: 5\n })\n ],\n providers: [AppService]\n})\nexport class AppModule {}\n"],"names":["AppModule","imports","ConfigModule","forRoot","load","exportConfiguration","validatePredefined","ignoreEnvFile","isGlobal","LoggerModule","forRootAsync","useFactory","pinoHttp","configLogger","configuration","logger","AuthModule","DatabaseModule","CacheModule","MailerModule","ContextModule","SchedulerModule","register","ApplicationsModule","HttpModule","global","timeout","maxRedirects","providers","AppService"],"mappings":"AAAA;;;;CAIC;;;;+
|
|
1
|
+
{"version":3,"sources":["../../backend/src/app.module.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { HttpModule } from '@nestjs/axios'\nimport { Module } from '@nestjs/common'\nimport { ConfigModule } from '@nestjs/config'\nimport { LoggerModule } from 'nestjs-pino'\nimport { USER_AGENT } from './app.constants'\nimport { AppService } from './app.service'\nimport { ApplicationsModule } from './applications/applications.module'\nimport { AuthModule } from './authentication/auth.module'\nimport { configuration, exportConfiguration } from './configuration/config.environment'\nimport { configLogger } from './configuration/config.logger'\nimport { CacheModule } from './infrastructure/cache/cache.module'\nimport { ContextModule } from './infrastructure/context/context.module'\nimport { DatabaseModule } from './infrastructure/database/database.module'\nimport { MailerModule } from './infrastructure/mailer/mailer.module'\nimport { SchedulerModule } from './infrastructure/scheduler/scheduler.module'\n\n@Module({\n imports: [\n ConfigModule.forRoot({ load: [exportConfiguration], validatePredefined: false, ignoreEnvFile: true, isGlobal: true }),\n LoggerModule.forRootAsync({\n useFactory: async () => ({\n pinoHttp: configLogger(configuration.logger)\n })\n }),\n AuthModule,\n DatabaseModule,\n CacheModule,\n MailerModule,\n ContextModule,\n SchedulerModule.register(),\n ApplicationsModule,\n HttpModule.register({\n global: true,\n headers: {\n 'User-Agent': USER_AGENT\n },\n timeout: 5000,\n maxRedirects: 5\n })\n ],\n providers: [AppService]\n})\nexport class AppModule {}\n"],"names":["AppModule","imports","ConfigModule","forRoot","load","exportConfiguration","validatePredefined","ignoreEnvFile","isGlobal","LoggerModule","forRootAsync","useFactory","pinoHttp","configLogger","configuration","logger","AuthModule","DatabaseModule","CacheModule","MailerModule","ContextModule","SchedulerModule","register","ApplicationsModule","HttpModule","global","headers","USER_AGENT","timeout","maxRedirects","providers","AppService"],"mappings":"AAAA;;;;CAIC;;;;+BA4CYA;;;eAAAA;;;uBA1Cc;wBACJ;wBACM;4BACA;8BACF;4BACA;oCACQ;4BACR;mCACwB;8BACtB;6BACD;+BACE;gCACC;8BACF;iCACG;;;;;;;AA4BzB,IAAA,AAAMA,YAAN,MAAMA;AAAW;;;QAzBtBC,SAAS;YACPC,oBAAY,CAACC,OAAO,CAAC;gBAAEC,MAAM;oBAACC,sCAAmB;iBAAC;gBAAEC,oBAAoB;gBAAOC,eAAe;gBAAMC,UAAU;YAAK;YACnHC,wBAAY,CAACC,YAAY,CAAC;gBACxBC,YAAY,UAAa,CAAA;wBACvBC,UAAUC,IAAAA,0BAAY,EAACC,gCAAa,CAACC,MAAM;oBAC7C,CAAA;YACF;YACAC,sBAAU;YACVC,8BAAc;YACdC,wBAAW;YACXC,0BAAY;YACZC,4BAAa;YACbC,gCAAe,CAACC,QAAQ;YACxBC,sCAAkB;YAClBC,iBAAU,CAACF,QAAQ,CAAC;gBAClBG,QAAQ;gBACRC,SAAS;oBACP,cAAcC,wBAAU;gBAC1B;gBACAC,SAAS;gBACTC,cAAc;YAChB;SACD;QACDC,WAAW;YAACC,sBAAU;SAAC"}
|
|
@@ -13,6 +13,8 @@ Object.defineProperty(exports, "AdminModule", {
|
|
|
13
13
|
}
|
|
14
14
|
});
|
|
15
15
|
const _common = require("@nestjs/common");
|
|
16
|
+
const _adminschedulerservice = require("./services/admin-scheduler.service");
|
|
17
|
+
const _adminservice = require("./services/admin.service");
|
|
16
18
|
function _ts_decorate(decorators, target, key, desc) {
|
|
17
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
18
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -24,7 +26,10 @@ let AdminModule = class AdminModule {
|
|
|
24
26
|
AdminModule = _ts_decorate([
|
|
25
27
|
(0, _common.Module)({
|
|
26
28
|
controllers: [],
|
|
27
|
-
providers: [
|
|
29
|
+
providers: [
|
|
30
|
+
_adminservice.AdminService,
|
|
31
|
+
_adminschedulerservice.AdminSchedulerService
|
|
32
|
+
]
|
|
28
33
|
})
|
|
29
34
|
], AdminModule);
|
|
30
35
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../backend/src/applications/admin/admin.module.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Module } from '@nestjs/common'\n\n@Module({\n controllers: [],\n providers: []\n})\nexport class AdminModule {}\n"],"names":["AdminModule","controllers","providers"],"mappings":"AAAA;;;;CAIC;;;;+
|
|
1
|
+
{"version":3,"sources":["../../../../backend/src/applications/admin/admin.module.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Module } from '@nestjs/common'\nimport { AdminSchedulerService } from './services/admin-scheduler.service'\nimport { AdminService } from './services/admin.service'\n\n@Module({\n controllers: [],\n providers: [AdminService, AdminSchedulerService]\n})\nexport class AdminModule {}\n"],"names":["AdminModule","controllers","providers","AdminService","AdminSchedulerService"],"mappings":"AAAA;;;;CAIC;;;;+BAUYA;;;eAAAA;;;wBARU;uCACe;8BACT;;;;;;;AAMtB,IAAA,AAAMA,cAAN,MAAMA;AAAa;;;QAHxBC,aAAa,EAAE;QACfC,WAAW;YAACC,0BAAY;YAAEC,4CAAqB;SAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/admin/interfaces/check-update.interfaces.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nexport interface ServerReleaseVersionManifest {\n // tag_name: `v1.0.0`\n tag_name: string\n}\n\nexport interface ServerReleaseNotification {\n version: string\n}\n"],"names":[],"mappings":"AAAA;;;;CAIC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
|
|
3
|
+
* This file is part of Sync-in | The open source file sync and share solution
|
|
4
|
+
* See the LICENSE file for licensing details
|
|
5
|
+
*/ "use strict";
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
Object.defineProperty(exports, "AdminSchedulerService", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function() {
|
|
12
|
+
return AdminSchedulerService;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
const _common = require("@nestjs/common");
|
|
16
|
+
const _schedule = require("@nestjs/schedule");
|
|
17
|
+
const _promises = require("node:timers/promises");
|
|
18
|
+
const _adminservice = require("./admin.service");
|
|
19
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
20
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
21
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
22
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
23
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
24
|
+
}
|
|
25
|
+
function _ts_metadata(k, v) {
|
|
26
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
27
|
+
}
|
|
28
|
+
let AdminSchedulerService = class AdminSchedulerService {
|
|
29
|
+
async checkServerUpdateAndNotify() {
|
|
30
|
+
// Apply a random delay so instances don't trigger the check simultaneously
|
|
31
|
+
const randomDelay = Math.floor(Math.random() * 900 * 1000);
|
|
32
|
+
await (0, _promises.setTimeout)(randomDelay);
|
|
33
|
+
await this.adminService.checkServerUpdateAndNotify();
|
|
34
|
+
}
|
|
35
|
+
constructor(adminService){
|
|
36
|
+
this.adminService = adminService;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
_ts_decorate([
|
|
40
|
+
(0, _schedule.Cron)(_schedule.CronExpression.EVERY_DAY_AT_9AM),
|
|
41
|
+
_ts_metadata("design:type", Function),
|
|
42
|
+
_ts_metadata("design:paramtypes", []),
|
|
43
|
+
_ts_metadata("design:returntype", Promise)
|
|
44
|
+
], AdminSchedulerService.prototype, "checkServerUpdateAndNotify", null);
|
|
45
|
+
AdminSchedulerService = _ts_decorate([
|
|
46
|
+
(0, _common.Injectable)(),
|
|
47
|
+
_ts_metadata("design:type", Function),
|
|
48
|
+
_ts_metadata("design:paramtypes", [
|
|
49
|
+
typeof _adminservice.AdminService === "undefined" ? Object : _adminservice.AdminService
|
|
50
|
+
])
|
|
51
|
+
], AdminSchedulerService);
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=admin-scheduler.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/admin/services/admin-scheduler.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Injectable } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { setTimeout } from 'node:timers/promises'\nimport { AdminService } from './admin.service'\n\n@Injectable()\nexport class AdminSchedulerService {\n constructor(private readonly adminService: AdminService) {}\n\n @Cron(CronExpression.EVERY_DAY_AT_9AM)\n async checkServerUpdateAndNotify() {\n // Apply a random delay so instances don't trigger the check simultaneously\n const randomDelay = Math.floor(Math.random() * 900 * 1000)\n await setTimeout(randomDelay)\n await this.adminService.checkServerUpdateAndNotify()\n }\n}\n"],"names":["AdminSchedulerService","checkServerUpdateAndNotify","randomDelay","Math","floor","random","setTimeout","adminService","EVERY_DAY_AT_9AM"],"mappings":"AAAA;;;;CAIC;;;;+BAQYA;;;eAAAA;;;wBANc;0BACU;0BACV;8BACE;;;;;;;;;;AAGtB,IAAA,AAAMA,wBAAN,MAAMA;IAGX,MACMC,6BAA6B;QACjC,2EAA2E;QAC3E,MAAMC,cAAcC,KAAKC,KAAK,CAACD,KAAKE,MAAM,KAAK,MAAM;QACrD,MAAMC,IAAAA,oBAAU,EAACJ;QACjB,MAAM,IAAI,CAACK,YAAY,CAACN,0BAA0B;IACpD;IARA,YAAY,AAAiBM,YAA0B,CAAE;aAA5BA,eAAAA;IAA6B;AAS5D;;iDAPuBC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
|
|
3
|
+
* This file is part of Sync-in | The open source file sync and share solution
|
|
4
|
+
* See the LICENSE file for licensing details
|
|
5
|
+
*/ "use strict";
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
Object.defineProperty(exports, "AdminService", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function() {
|
|
12
|
+
return AdminService;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
const _axios = require("@nestjs/axios");
|
|
16
|
+
const _common = require("@nestjs/common");
|
|
17
|
+
const _appconstants = require("../../../app.constants");
|
|
18
|
+
const _shared = require("../../../common/shared");
|
|
19
|
+
const _cacheservice = require("../../../infrastructure/cache/services/cache.service");
|
|
20
|
+
const _applicationsconstants = require("../../applications.constants");
|
|
21
|
+
const _notifications = require("../../notifications/constants/notifications");
|
|
22
|
+
const _notificationsmanagerservice = require("../../notifications/services/notifications-manager.service");
|
|
23
|
+
const _adminusersqueriesservice = require("../../users/services/admin-users-queries.service");
|
|
24
|
+
const _checkupdate = require("../utils/check-update");
|
|
25
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
26
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
27
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
28
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
29
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
30
|
+
}
|
|
31
|
+
function _ts_metadata(k, v) {
|
|
32
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
|
+
}
|
|
34
|
+
let AdminService = class AdminService {
|
|
35
|
+
async checkServerUpdateAndNotify() {
|
|
36
|
+
let lastVersion;
|
|
37
|
+
try {
|
|
38
|
+
const res = await this.http.axiosRef({
|
|
39
|
+
method: _applicationsconstants.HTTP_METHOD.GET,
|
|
40
|
+
url: _shared.APP_URL.SERVER_VERSION_MANIFEST
|
|
41
|
+
});
|
|
42
|
+
lastVersion = res.data?.tag_name || '';
|
|
43
|
+
} catch (e) {
|
|
44
|
+
this.logger.warn(`${this.checkServerUpdateAndNotify.name} - unable to check update: ${e}`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (!lastVersion.startsWith('v')) {
|
|
48
|
+
this.logger.warn(`${this.checkServerUpdateAndNotify.name} - unable to check version: ${lastVersion}`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
lastVersion = lastVersion.slice(1); // remove 'v' to compare with the current version
|
|
52
|
+
if (!(0, _checkupdate.isServerUpdateAvailable)(_appconstants.VERSION, lastVersion)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Get the last version that was notified to administrators
|
|
56
|
+
const notifiedVersion = await this.cache.get(this.checkServerUpdateAndNotify.name);
|
|
57
|
+
if (!notifiedVersion?.version) {
|
|
58
|
+
// The version was never stored, do it
|
|
59
|
+
await this.cache.set(this.checkServerUpdateAndNotify.name, {
|
|
60
|
+
version: _appconstants.VERSION
|
|
61
|
+
}, 0);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (notifiedVersion.version === lastVersion) {
|
|
65
|
+
// Notification was already sent to administrators
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const adminsToNotify = await this.adminUsersQueries.listAdminsToNotify();
|
|
69
|
+
if (!adminsToNotify.length) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const notification = {
|
|
73
|
+
app: _notifications.NOTIFICATION_APP.UPDATE_AVAILABLE,
|
|
74
|
+
event: _notifications.NOTIFICATION_APP_EVENT.UPDATE_AVAILABLE,
|
|
75
|
+
element: lastVersion,
|
|
76
|
+
externalUrl: _shared.APP_URL.RELEASES,
|
|
77
|
+
url: null
|
|
78
|
+
};
|
|
79
|
+
this.notificationsManager.create(adminsToNotify, notification).then(()=>this.cache.set(this.checkServerUpdateAndNotify.name, {
|
|
80
|
+
version: lastVersion
|
|
81
|
+
}, 0)).catch((e)=>this.logger.error(`${this.checkServerUpdateAndNotify.name} - ${e}`));
|
|
82
|
+
}
|
|
83
|
+
constructor(http, cache, notificationsManager, adminUsersQueries){
|
|
84
|
+
this.http = http;
|
|
85
|
+
this.cache = cache;
|
|
86
|
+
this.notificationsManager = notificationsManager;
|
|
87
|
+
this.adminUsersQueries = adminUsersQueries;
|
|
88
|
+
this.logger = new _common.Logger(AdminService.name);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
AdminService = _ts_decorate([
|
|
92
|
+
(0, _common.Injectable)(),
|
|
93
|
+
_ts_metadata("design:type", Function),
|
|
94
|
+
_ts_metadata("design:paramtypes", [
|
|
95
|
+
typeof _axios.HttpService === "undefined" ? Object : _axios.HttpService,
|
|
96
|
+
typeof _cacheservice.Cache === "undefined" ? Object : _cacheservice.Cache,
|
|
97
|
+
typeof _notificationsmanagerservice.NotificationsManager === "undefined" ? Object : _notificationsmanagerservice.NotificationsManager,
|
|
98
|
+
typeof _adminusersqueriesservice.AdminUsersQueries === "undefined" ? Object : _adminusersqueriesservice.AdminUsersQueries
|
|
99
|
+
])
|
|
100
|
+
], AdminService);
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=admin.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/admin/services/admin.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { HttpService } from '@nestjs/axios'\nimport { Injectable, Logger } from '@nestjs/common'\nimport type { AxiosResponse } from 'axios'\nimport { VERSION } from '../../../app.constants'\nimport { APP_URL } from '../../../common/shared'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { HTTP_METHOD } from '../../applications.constants'\nimport { NOTIFICATION_APP, NOTIFICATION_APP_EVENT } from '../../notifications/constants/notifications'\nimport { NotificationContent } from '../../notifications/interfaces/notification-properties.interface'\nimport type { UserMailNotification } from '../../notifications/interfaces/user-mail-notification.interface'\nimport { NotificationsManager } from '../../notifications/services/notifications-manager.service'\nimport { AdminUsersQueries } from '../../users/services/admin-users-queries.service'\nimport type { ServerReleaseNotification, ServerReleaseVersionManifest } from '../interfaces/check-update.interfaces'\nimport { isServerUpdateAvailable } from '../utils/check-update'\n\n@Injectable()\nexport class AdminService {\n private readonly logger = new Logger(AdminService.name)\n\n constructor(\n private readonly http: HttpService,\n private readonly cache: Cache,\n private readonly notificationsManager: NotificationsManager,\n private readonly adminUsersQueries: AdminUsersQueries\n ) {}\n\n async checkServerUpdateAndNotify() {\n let lastVersion: string\n try {\n const res: AxiosResponse<ServerReleaseVersionManifest> = await this.http.axiosRef({\n method: HTTP_METHOD.GET,\n url: APP_URL.SERVER_VERSION_MANIFEST\n })\n lastVersion = res.data?.tag_name || ''\n } catch (e) {\n this.logger.warn(`${this.checkServerUpdateAndNotify.name} - unable to check update: ${e}`)\n return\n }\n if (!lastVersion.startsWith('v')) {\n this.logger.warn(`${this.checkServerUpdateAndNotify.name} - unable to check version: ${lastVersion}`)\n return\n }\n lastVersion = lastVersion.slice(1) // remove 'v' to compare with the current version\n if (!isServerUpdateAvailable(VERSION, lastVersion)) {\n return\n }\n // Get the last version that was notified to administrators\n const notifiedVersion: ServerReleaseNotification = await this.cache.get(this.checkServerUpdateAndNotify.name)\n if (!notifiedVersion?.version) {\n // The version was never stored, do it\n await this.cache.set(this.checkServerUpdateAndNotify.name, { version: VERSION } satisfies ServerReleaseNotification, 0)\n return\n }\n if (notifiedVersion.version === lastVersion) {\n // Notification was already sent to administrators\n return\n }\n const adminsToNotify: UserMailNotification[] = await this.adminUsersQueries.listAdminsToNotify()\n if (!adminsToNotify.length) {\n return\n }\n const notification: NotificationContent = {\n app: NOTIFICATION_APP.UPDATE_AVAILABLE,\n event: NOTIFICATION_APP_EVENT.UPDATE_AVAILABLE,\n element: lastVersion,\n externalUrl: APP_URL.RELEASES,\n url: null\n }\n this.notificationsManager\n .create(adminsToNotify, notification)\n .then(() => this.cache.set(this.checkServerUpdateAndNotify.name, { version: lastVersion } satisfies ServerReleaseNotification, 0))\n .catch((e: Error) => this.logger.error(`${this.checkServerUpdateAndNotify.name} - ${e}`))\n }\n}\n"],"names":["AdminService","checkServerUpdateAndNotify","lastVersion","res","http","axiosRef","method","HTTP_METHOD","GET","url","APP_URL","SERVER_VERSION_MANIFEST","data","tag_name","e","logger","warn","name","startsWith","slice","isServerUpdateAvailable","VERSION","notifiedVersion","cache","get","version","set","adminsToNotify","adminUsersQueries","listAdminsToNotify","length","notification","app","NOTIFICATION_APP","UPDATE_AVAILABLE","event","NOTIFICATION_APP_EVENT","element","externalUrl","RELEASES","notificationsManager","create","then","catch","error","Logger"],"mappings":"AAAA;;;;CAIC;;;;+BAkBYA;;;eAAAA;;;uBAhBe;wBACO;8BAEX;wBACA;8BACF;uCACM;+BAC6B;6CAGpB;0CACH;6BAEM;;;;;;;;;;AAGjC,IAAA,AAAMA,eAAN,MAAMA;IAUX,MAAMC,6BAA6B;QACjC,IAAIC;QACJ,IAAI;YACF,MAAMC,MAAmD,MAAM,IAAI,CAACC,IAAI,CAACC,QAAQ,CAAC;gBAChFC,QAAQC,kCAAW,CAACC,GAAG;gBACvBC,KAAKC,eAAO,CAACC,uBAAuB;YACtC;YACAT,cAAcC,IAAIS,IAAI,EAAEC,YAAY;QACtC,EAAE,OAAOC,GAAG;YACV,IAAI,CAACC,MAAM,CAACC,IAAI,CAAC,GAAG,IAAI,CAACf,0BAA0B,CAACgB,IAAI,CAAC,2BAA2B,EAAEH,GAAG;YACzF;QACF;QACA,IAAI,CAACZ,YAAYgB,UAAU,CAAC,MAAM;YAChC,IAAI,CAACH,MAAM,CAACC,IAAI,CAAC,GAAG,IAAI,CAACf,0BAA0B,CAACgB,IAAI,CAAC,4BAA4B,EAAEf,aAAa;YACpG;QACF;QACAA,cAAcA,YAAYiB,KAAK,CAAC,IAAG,iDAAiD;QACpF,IAAI,CAACC,IAAAA,oCAAuB,EAACC,qBAAO,EAAEnB,cAAc;YAClD;QACF;QACA,2DAA2D;QAC3D,MAAMoB,kBAA6C,MAAM,IAAI,CAACC,KAAK,CAACC,GAAG,CAAC,IAAI,CAACvB,0BAA0B,CAACgB,IAAI;QAC5G,IAAI,CAACK,iBAAiBG,SAAS;YAC7B,sCAAsC;YACtC,MAAM,IAAI,CAACF,KAAK,CAACG,GAAG,CAAC,IAAI,CAACzB,0BAA0B,CAACgB,IAAI,EAAE;gBAAEQ,SAASJ,qBAAO;YAAC,GAAuC;YACrH;QACF;QACA,IAAIC,gBAAgBG,OAAO,KAAKvB,aAAa;YAC3C,kDAAkD;YAClD;QACF;QACA,MAAMyB,iBAAyC,MAAM,IAAI,CAACC,iBAAiB,CAACC,kBAAkB;QAC9F,IAAI,CAACF,eAAeG,MAAM,EAAE;YAC1B;QACF;QACA,MAAMC,eAAoC;YACxCC,KAAKC,+BAAgB,CAACC,gBAAgB;YACtCC,OAAOC,qCAAsB,CAACF,gBAAgB;YAC9CG,SAASnC;YACToC,aAAa5B,eAAO,CAAC6B,QAAQ;YAC7B9B,KAAK;QACP;QACA,IAAI,CAAC+B,oBAAoB,CACtBC,MAAM,CAACd,gBAAgBI,cACvBW,IAAI,CAAC,IAAM,IAAI,CAACnB,KAAK,CAACG,GAAG,CAAC,IAAI,CAACzB,0BAA0B,CAACgB,IAAI,EAAE;gBAAEQ,SAASvB;YAAY,GAAuC,IAC9HyC,KAAK,CAAC,CAAC7B,IAAa,IAAI,CAACC,MAAM,CAAC6B,KAAK,CAAC,GAAG,IAAI,CAAC3C,0BAA0B,CAACgB,IAAI,CAAC,GAAG,EAAEH,GAAG;IAC3F;IArDA,YACE,AAAiBV,IAAiB,EAClC,AAAiBmB,KAAY,EAC7B,AAAiBiB,oBAA0C,EAC3D,AAAiBZ,iBAAoC,CACrD;aAJiBxB,OAAAA;aACAmB,QAAAA;aACAiB,uBAAAA;aACAZ,oBAAAA;aANFb,SAAS,IAAI8B,cAAM,CAAC7C,aAAaiB,IAAI;IAOnD;AAiDL"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
|
|
3
|
+
* This file is part of Sync-in | The open source file sync and share solution
|
|
4
|
+
* See the LICENSE file for licensing details
|
|
5
|
+
*/ "use strict";
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
const _axios = require("@nestjs/axios");
|
|
10
|
+
const _testing = require("@nestjs/testing");
|
|
11
|
+
const _cacheservice = require("../../../infrastructure/cache/services/cache.service");
|
|
12
|
+
const _notificationsmanagerservice = require("../../notifications/services/notifications-manager.service");
|
|
13
|
+
const _adminusersqueriesservice = require("../../users/services/admin-users-queries.service");
|
|
14
|
+
const _adminservice = require("./admin.service");
|
|
15
|
+
describe(_adminservice.AdminService.name, ()=>{
|
|
16
|
+
let service;
|
|
17
|
+
beforeAll(async ()=>{
|
|
18
|
+
const module = await _testing.Test.createTestingModule({
|
|
19
|
+
providers: [
|
|
20
|
+
_adminservice.AdminService,
|
|
21
|
+
{
|
|
22
|
+
provide: _axios.HttpService,
|
|
23
|
+
useValue: {}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
provide: _cacheservice.Cache,
|
|
27
|
+
useValue: {}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
provide: _adminusersqueriesservice.AdminUsersQueries,
|
|
31
|
+
useValue: {}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
provide: _notificationsmanagerservice.NotificationsManager,
|
|
35
|
+
useValue: {}
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}).compile();
|
|
39
|
+
service = module.get(_adminservice.AdminService);
|
|
40
|
+
});
|
|
41
|
+
it('should be defined', ()=>{
|
|
42
|
+
expect(service).toBeDefined();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=admin.service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/applications/admin/services/admin.service.spec.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { HttpService } from '@nestjs/axios'\nimport { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { NotificationsManager } from '../../notifications/services/notifications-manager.service'\nimport { AdminUsersQueries } from '../../users/services/admin-users-queries.service'\nimport { AdminService } from './admin.service'\n\ndescribe(AdminService.name, () => {\n let service: AdminService\n\n beforeAll(async () => {\n const module: TestingModule = await Test.createTestingModule({\n providers: [\n AdminService,\n { provide: HttpService, useValue: {} },\n { provide: Cache, useValue: {} },\n { provide: AdminUsersQueries, useValue: {} },\n { provide: NotificationsManager, useValue: {} }\n ]\n }).compile()\n\n service = module.get<AdminService>(AdminService)\n })\n\n it('should be defined', () => {\n expect(service).toBeDefined()\n })\n})\n"],"names":["describe","AdminService","name","service","beforeAll","module","Test","createTestingModule","providers","provide","HttpService","useValue","Cache","AdminUsersQueries","NotificationsManager","compile","get","it","expect","toBeDefined"],"mappings":"AAAA;;;;CAIC;;;;uBAE2B;yBACQ;8BACd;6CACe;0CACH;8BACL;AAE7BA,SAASC,0BAAY,CAACC,IAAI,EAAE;IAC1B,IAAIC;IAEJC,UAAU;QACR,MAAMC,SAAwB,MAAMC,aAAI,CAACC,mBAAmB,CAAC;YAC3DC,WAAW;gBACTP,0BAAY;gBACZ;oBAAEQ,SAASC,kBAAW;oBAAEC,UAAU,CAAC;gBAAE;gBACrC;oBAAEF,SAASG,mBAAK;oBAAED,UAAU,CAAC;gBAAE;gBAC/B;oBAAEF,SAASI,2CAAiB;oBAAEF,UAAU,CAAC;gBAAE;gBAC3C;oBAAEF,SAASK,iDAAoB;oBAAEH,UAAU,CAAC;gBAAE;aAC/C;QACH,GAAGI,OAAO;QAEVZ,UAAUE,OAAOW,GAAG,CAAef,0BAAY;IACjD;IAEAgB,GAAG,qBAAqB;QACtBC,OAAOf,SAASgB,WAAW;IAC7B;AACF"}
|